// Subject 目标
function Subject(){
  this.observers = [];
}
// 增加观察者
Subject.prototype.addObserver = function(observer){
  this.observers.push(observer);
};
// 去除观察者
Subject.prototype.removeObserver = function( observer ){
  var index = this.observers.indexOf(observer);
  this.observers.splice(index, 1);
};
// 通知观察者
Subject.prototype.notify = function(context){
  var observerLength = this.observers.length;
  // 循环调用所有观察者update
  for(var i = 0; i < observerLength; i++){
  	
    this.observers[i].update(context);
  }
};

// 观察者列表
function ObserverList(){
  this.observerList = [];
}
ObserverList.prototype.add = function( obj ){
  return this.observerList.push( obj );
};
ObserverList.prototype.count = function(){
  return this.observerList.length;
};
ObserverList.prototype.get = function( index ){
  if( index > -1 && index < this.observerList.length ){
    return this.observerList[ index ];
  }
};
ObserverList.prototype.indexOf = function( obj, startIndex ){
  var i = startIndex;
  while( i < this.observerList.length ){
    if( this.observerList[i] === obj ){
      return i;
    }
    i++;
  }
  return -1;
};
ObserverList.prototype.removeAt = function( index ){
  this.observerList.splice( index, 1 );
};


//观察者
function Observer(){
	// 更新操作
  this.update = function(){
  	// ...
  };
}

var littleXin = new Observer('小新');
var bigXin = new Observer('大新');

var ladyD = new Subject('主播D');
// 增加观察者小新和大新
ladyD.addObserver(littleXin);
ladyD.addObserver(bigXin);


